4 require 'test/unit/ui/console/testrunner'
5 require 'solitaire_cypher.rb'
7 class SolitaireCypherTest < Test::Unit::TestCase
9 KNOWN_PLAINTEXT = 'CODEI NRUBY LIVEL ONGER'
10 KNOWN_CYPHER = 'GLNCQ MJAFF FVOMB JIYCB'
14 @crypt_keeper = CryptKeeper.new(@deck)
18 assert_equal('A', Card.value_to_chr(1))
19 assert_equal('Z', Card.value_to_chr(26))
23 assert_equal(1, Card.chr_to_value("A"))
24 assert_equal(26, Card.chr_to_value("Z"))
28 expected = %w(D W J X H Y R F D G)
30 expected.each { | exp |
31 key = deck.next_keystream
32 if exp != Card.value_to_chr(key)
33 @errors << "expected #{exp}, key = #{Card.value_to_chr(key)}"
38 def test_decrypt_known_cypher
39 assert_equal(KNOWN_PLAINTEXT, @crypt_keeper.decrypt(KNOWN_CYPHER))
42 def test_encrypt_known_message
43 assert_equal(KNOWN_CYPHER, @crypt_keeper.encrypt(KNOWN_PLAINTEXT))
47 Test::Unit::UI::Console::TestRunner.run(SolitaireCypherTest)